package visitor.source;

/**
 * 具体元素，实现Accept操作
 * @author cheng:
 * @date 2019/4/27 12:52
 */
public class ConcreteElementB implements Element{
    @Override
    public void accept(Visitor visitor) {
        //充分利用双分派技术，实现处理与数据结构的分离
        //第一次分派将访问者对象作为参数传递给具体元素
        //第二次分派调用访问者的访问元素的方法，同时将自己本身作为参数传递

        //双分派意味着得到执行的操作取决于访问者的状态和两个具体元素的类型
        visitor.visitConcreteElementB(this);
    }

    public void operationB(){
        //其余操作
    }
}
